package br.com.tiespec.ejb.Ejb;

import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;

import br.com.tiespec.ejb.Dao.ProjetoDAO;
import br.com.tiespec.ejb.EjbInterface.ProjetoInterface;
import br.com.tiespec.model.Enum.TipoSortOrder;
import br.com.tiespec.model.Modelo.Projeto;
import br.com.tiespec.model.Util.RNException;

@Stateless(mappedName = "ProjetoImpl")
@Local(value=ProjetoInterface.class)
public class ProjetoImpl implements ProjetoInterface  {

	private static final long serialVersionUID = 1L;

	@EJB ProjetoDAO pDao;
	
	@Override
	public List<Projeto> listarProjetos(int first, int pageSize,
			String sortField, TipoSortOrder sortOrder, Long idClientePortal, 
			String codigo, String nome, String cliente) {
		return pDao.listarProjeto(first, pageSize, sortField, sortOrder, idClientePortal, codigo, nome, cliente);
	}

	@Override
	public int countProjetos(Long idClientePortal, String codigo, String nome, String cliente) {
		return pDao.countProjeto(idClientePortal, codigo, nome, cliente);
	}

	@Override
	public Projeto selecionarProjeto(Long id) {
		return pDao.selecionar(id);
	}

	@Override
	public void salvarProjeto(Projeto projetoInstance) throws RNException {
		try {
			pDao.save(projetoInstance);
		} catch (Exception e){
			e.printStackTrace();
			throw new RNException(e);
		}
	}

	@Override
	public void atualizarProjeto(Projeto projetoInstance) throws RNException {
		try {
			pDao.update(projetoInstance);
		} catch (Exception e){
			e.printStackTrace();
			throw new RNException(e);
		}
	}

	@Override
	public void removerProjeto(Projeto projetoInstance) throws RNException {
		try {
			pDao.delete(Projeto.class, projetoInstance.getId());
		} catch (Exception e){
			e.printStackTrace();
			throw new RNException(e);
		}		
	}

}